package day06;

import javax.xml.transform.sax.SAXTransformerFactory;
import java.nio.channels.MulticastChannel;
import java.util.Arrays;
import java.util.Random;

public class MethodDemo {

    public static void main(String[] args) {

        /*
        //调用无参无返回值  直接写定义的名字： say()方法
        say();
        System.out.println("-----------");

        //调用的有参数 无返回值的，要有双引号
        sayHi("张三");//调用有参无返回值的 sayHi（String name）   ---实参
        System.out.println("-----------------");

        sayHello("李四",66);//String name = "李四",int age=66-----实参
        sayHello("小明",88);//String name ="小明",int age=88
        System.out.println("-------------");

        //调用有参有返回值
        //写法一
        int a= sum(5,6);//sum(5,6)的值就是return后面的那个数
        System.out.println(a);//11-----模拟对返回值的后续操作
          //写法二：
        int m=5,n=6;
        int b = sum(m,n);//传的是m和n里面的数
        System.out.println(b);//11--模拟对返回值的后续操作
        System.out.println("-----------------------------------");

        //4、调用数组
        int[] c = generateArray(3,5); //模拟第1个人的访问
        System.out.println("数组的长度:"+c.length); //---模拟对返回值的后续操作
        for(int i=0;i<c.length;i++){ //---模拟对返回值的后续操作
            System.out.println(c[i]);
        }


        int[] d = generateArray(2,5); //模拟第2个人的访问
        System.out.println("第1个元素的值:"+d[0]); //---模拟对返回值的后续操作
        Arrays.sort(d); //---模拟对返回值的后续操作
        for(int i=0;i<d.length;i++){ //---模拟对返回值的后续操作
            System.out.println(d[i]);
        }

         */

        //重载：
        say();
        say("lisi");
        say("lisi",88);

    }


/*
    //1、无参无返回值 无返回值用void 无参括号没参数
    public static void say() {
        System.out.println("欢迎来到达内It");
    }


    //2、有参无返回值 有参括号内有一定的数据类型（String name）
    public static void sayHi(String name){
        System.out.println("大家好，我叫"+name+",今年3岁了");
    }

   // public static void sayHello(String name,int age){//-------形参
  //      System.out.println("大家好，我叫"+name+",今年"+age+"岁了");
   // }


    //3、有参有返回值 必须要有return
    public static int sum(int num1,int num2){//-----形参
        int num =num1+num2;
        return num;//返回的是num里面的那个数字
        //return num1+num2;//返回的是num1+num2的和
    }

    //4、生成一个整形的数组，并填写随机数据
    public static int[] generateArray(int len,int max){//-------形参
        Random rand  = new Random();
        int[] arr = new int [len];
        for (int i =0;i<arr.length;i++){
            arr[i]=rand.nextInt(max+1);//+1包括max
        }
        return arr;
    }


//return 的用法：
    public static void sayHello(String name,int age){
        if (age>=50){//在某种特定的条件下，提前结束方法（和break相似）
            return;//结束方法的执行
        }
        System.out.println("大家好，我叫"+name+"，今年"+age+"岁了");
    }


 */

    //重载：
    public static void say() {
        System.out.println("欢迎来到达内It");
    }
    public static void say(String name){
        System.out.println("大家好，我叫"+name);
    }
    public static void say(String name,int age){//-------形参
              System.out.println("大家好，我叫"+name+",今年"+age+"岁了");
    }

    public static void say(int age){}//正确的重载
    public static void say(int age,String name){}//正确重载
  //  public static int say(return 1;){}//编译错误，重载与返回值的类型（int）无关
  //  public static void say(String address){}//编译错误。重载与参数名称（address）无关






}

